package ch.epfl.lara.pm;

import ch.epfl.lara.pm.ast.Tree
import ch.epfl.lara.pm.transformation._

trait Transform {
  
  def transform(program: Tree): Tree = {
    val desugarized = Desugarizer(program)        // desugarize source
    NameAnalyzer(desugarized)                     // analyze semantic of the program
    val matches = MatchAnalyzer(desugarized)      // canonize matches expressions for purposes of static analyze
    matches 
  }

}
